- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
Во-первых, пакет scene.shape обеспечивает создание Node-узлов графа сцены, отображающих простые геометрические формы: дуга, окружность, эллипс, кривые, линия, многоугольник, ломаная линия, прямоугольник, а также текст.
Далее пакет scene.image с помощью класса ImageView обеспечивает отображение существующего изображения, загружаемого с помощью класса Image.
Кроме того, данный пакет предоставляет класс WritableImage, который позволяет создавать изображение из набора пикселей с последующим отображением в узле графа сцены ImageView.
И пакет scene.canvas обеспечивает создание узла графа сцены Canvas с последующим рисованием в нем простых геометрических форм, заполнение Canvas-узла изображением и текстом.
Если сравнивать JavaFX 2D графику с 2D графикой библиотек AWT/Swing, можно сказать, что, если не вдаваться в детали различающихся моделей программирования, JavaFX 2D графика обеспечивает ту же функциональность, что и AWT/Swing 2D графика, упрощая добавление к объектам 2D графики визуальных эффектов, трансформаций и анимации.
Надо также отметить, что в отличие от AWT/Swing, JavaFX предоставляет для использования готовые 2D примитивы в виде узлов графа сцены, в то время как в AWT/Swing их нужно рисовать.
Отображение 3D графики в JavaFX-приложениях возможно двумя способами.
Первый способ – это создание 2D объекта графа сцены и применение к нему 3D трансформаций.
Второй способ – использование классов Box, Cylinder, MeshView, Sphere пакета scene.shape, представляющих готовые Shape3D графические примитивы куб, цилиндр, поверхность и сфера.
При этом узлы Shape3D графа сцены имеют такие свойства как материал, режим рисования и отображение внутренних поверхностей.
Также к узлам Shape3D графа сцены могут применяться такие эффекты как камера, освещение, трансформации и анимация.
Если сравнивать JavaFX 3D графику с 3D графикой библиотеки Java 3D, можно сказать, что, если не вдаваться в детали различающихся моделей программирования, JavaFX 3D графика обеспечивает ту же функциональность, что и Java 3D графика, за исключением использования класса Canvas3D библиотеки Java 3D, позволяющего 3D рисование.
Теперь перечислим основные возможности JavaFX.
JavaFX предоставляет программный интерфейс JavaFX API для создания на языке Java JavaFX-приложений с богатым GUI-интерфейсом, 2D/3D графикой, анимацией и аудио-видео контентом.
JavaFX интегрирована с JRE/JDK.
JavaFX имеет альтернативное декларативное XML-описание GUI-интерфейса на языке FXML.
JavaFX включает инструмент JavaFX Scene Builder для визуальной компоновки GUI-компонентов в GUI-интерфейс на основе языка FXML.
JavaFX обеспечивает изменение внешнего вида GUI-компонентов с использованием CSS.
JavaFX обеспечивает встраивание HTML-контента в JavaFX-приложение с помощью компонента WebView с возможностью выполнения Javascript-кода и редактирование HTML-контента с помощью компонента HTMLEditor.
JavaFX обеспечивает интеграцию с библиотеками Swing и SWT.
JavaFX обеспечивает создание красочных и насыщенных отчетов с диаграммами данных.
JavaFX предоставляет богатый набор компонентов и компоновок компонентов для создания GUI-интерфейса.
JavaFX обеспечивает встраивание аудио и видео контента в JavaFX-приложение с помощью компонентов MediaView и AudioClip.
JavaFX обеспечивает отображение 2D и 3D графики с добавлением визуальных эффектов, трансформаций и анимации.
JavaFX обеспечивает создание изображений 2D-графики из простых геометрических форм, из существующих изображений и текста с помощью Canvas API.
JavaFX обеспечивает поддержку Rich Text с помощью пакета javafx.scene. text.
JavaFX обеспечивает использование визуальных эффектов, камеры, источников света, трансформаций и анимации.
JavaFX позволяет печать узла графа JavaFX сцены с помощью Printing API.
JavaFX обеспечивает связывание данных.
JavaFX позволяет выполнение фоновых задач.
JavaFX позволяет разделение сцены на подсцены с помощью SubScene API.
Архитектура платформы JavaFX
Так как платформа JavaFX обеспечивает 2D/3D графические, медиа и анимационные возможности для приложений, технология JavaFX оперирует терминологией и понятиями компьютерной графики.
Компьютерная графика – создание и отображение данных изображения компьютером с помощью программного обеспечения и компьютерного оборудования.
Существуют различные виды компьютерной графики.
Это 2D-графика – создание цифровых изображений из двухмерных геометрических моделей.
Растровая графика – это представление цифрового изображения в виде сетки пикселей.
Векторная графика – это представление цифрового изображения в виде математических формул, описывающих изображение как набор геометрических примитивов.
И наконец 3D-графика – создание цифровых изображений из трехмерного представления геометрических данных.
Рендеринг (rendering) – это процесс генерации растрового изображения из модели (model) или сцены (scene) с сопутствующими эффектами.
Одним из быстрых методов рендеринга является растеризация (rasterisation) – геометрическое проецирование моделей на плоскость изображения с генерацией растрового изображения.
Рендеринг, основанный на растеризации, выполняется по графическому конвейеру (graphics pipeline).
Графический конвейер представляет собой стадии процесса рендеринга, основанного на растеризации, и может быть разделен на три этапа – тесселяция, геометрическая обработка, и растеризация.
Тесселяция (tessellation) – процесс разбиения поверхности модели на полигоны, он производится программным обеспечением без аппаратного ускорения.
Геометрическая обработка – это трансформация, отсечение, освещение, проецирование и предварительная обработка, производится, как правило, программным обеспечением до фазы предварительной обработки, которая частично или полностью осуществляется на аппаратном уровне.
Растеризация – это конвертация двухмерного представления сцены в растровое изображение, выполняется на аппаратном уровне видео картой.
Наиболее распространенные технологии графического конвейера – это библиотеки OpenGL и Direct3D.
Модель – это описание или набор данных, представляющий форму объекта.
В JavaFX-технологии модель представлена экземпляром класса GUI-компонента.
Сцена – это скомпонованный в рабочей области набор моделей и объектов, вызывающих различные эффекты, например, источник света и камера, которые создают эффекты освещенности и перспективы.
Модели внутри сцены характеризуются размером и взаимным расположением.
Полигон (polygon) – замкнутая фигура, созданная путем соединения отрезков, где каждый конец отрезка соединяется только с одним концом двух других отрезков (треугольник, прямоугольник, окружность и т.д.). Отрезки называются краями или сторонами (edges или sides), а точки соединения отрезков – вершинами (vertices).
Растровое изображение модели, интегрированное в сцену, называется спрайтом (sprite).
Такой рендеринг называется предварительным (pre-rendering) – когда используются предварительно сгенерированные изображения моделей перед отображением всей сцены в реальном времени.
Граф сцены (scene graph) – это структура данных, коллекция узлов (node) дерева, которая упорядочивает логическую структуру сцены.
Компьютерная анимация – это быстрый показ последовательности изображений, созданных с помощью компьютерной графики, для создания иллюзии движения.
В технологии JavaFX используется два вида анимации – анимация по ключевым кадрам, когда разработчик расставляет ключевые кадры на временной шкале, а промежуточные кадры автоматически генерируются программным обеспечением, и это программируемая анимация, когда движение отдельных объектов программируется.
Ключевой кадр (key frame) – указывает значение свойства в определенное время в период выполнения анимации.
Анимация создается с помощью изменения таких свойств объектов как размер, положение, цвет и т. д.
С помощью ключевых кадров задаются значения свойств на временной шкале, а программное обеспечение само генерирует плавные переходы между ключевыми кадрами.
Материал – это информация о характеристиках поверхности 3D-объекта – цвет, отражающая/преломляющая способность и др.
Mesh – это набор вершин и многоугольников, определяющих форму 3D-объекта.
Back-face culling – отключение отображения невидимых поверхностей.
В то время как библиотеки AWT/Swing и SWT оперируют окнами, в которых размещаются компоненты интерфейса согласно компоновкам, компоненты графического интерфейса пользователя JavaFX-приложения образуют сцену, логическая структура

